package demo3;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;

public class test3
{    private static String info=
        "10001,张无忌,男,2023-07-22 11:11:12,东湖" +
        "#10002,赵敏,女,2023-07-22 09:11:21,黄鹤楼-归元禅寺" +
        "#10003,周芷若,女,2023-07-22 04:11:21,木兰文化区-东湖" +
        "#10004,小昭,女,2023-07-22 08:11:21,东湖" +
        "#10005,灭绝,女,2023-07-22 17:11:21,归元禅寺";
       private static List<Student>list=new ArrayList<>();
       private static Map<String,Integer> map=new HashMap<>();
        public static void main(String[] args)
    {     initArr();
          func();
    }

    private static void func()
    {
        //map适合统计是真的，注意key别重复就行
        for(int i=0;i<list.size();i++)
        {
            if(map.containsKey(list.get(i).getSpot())) map.put(list.get(i).getSpot(),map.get(list.get(i).getSpot())+1);
            else map.put(list.get(i).getSpot(),1);
        }
        //用键值对类型去遍历map//我才能做到找到一个最大的value而它属于的key。单独的key和value用set遍历。找不到另外一个
        int max=-1; String spot="";
        Set<Map.Entry<String, Integer>> set=map.entrySet();
        for(Map.Entry<String,Integer> it:set)
        {
                       if(it.getValue()>max)
                       {
                           max=it.getValue();
                           spot=it.getKey();
                       }

        }
        System.out.println("去"+spot+"最多，有"+max+"人");
        //map，只是统计数据。可是我没法找到具体谁选的哪个景点和谁没选哪个景点。最早的list里面不就存了谁去哪个。遍历他不就好了。看谁去的哪个不是最多人数的不就可以输出了
        for(Student it:list)
        {
               if(!it.getSpot().equals(spot))
               System.out.println(it.getName()+"没有选择去人最多的地方"+"而是去了 "+it.getSpot());
        }



//
//        Set<String> keys=map.keySet();
//       Collection<Integer> values=map.values();
//
//        for(Integer it:values)
//        {
//            if(it>max)max=it;
//        }
//        System.out.println(max);


    }

    private static void initArr()
    {    String []arr=info.split("#");//用于将字符串分割成子字符串，并返回一个包含这些子字符串的数组。
        for(String str:arr)//#
        {
            String []arr1=str.split(",");//，

            //  把arr1[3]转化成LocalDatetime类型，并且格式是yyyy-MM-dd HH:mm:ss

                  DateTimeFormatter dtf =DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
                  LocalDateTime t1=LocalDateTime.parse(arr1[3],dtf);

                 list.add(new Student(Long.parseLong(arr1[0]),arr1[1],arr1[2],t1,arr1[4]));
        }
        for(Student it:list)
        {
            System.out.println(it);
        }
    }

}
